#　1.首先设定一个用户列表
user_list = [
    {'username':'wenjing','password':'123456','money':1000},
    {'username':'tudou','password':'888888','money':10000}
]
# 3.查询用户名
def check_user(user_name):      # 定义一个查询用户名的函数，参数为用户名
    for user in user_list:
        print(user)             # 给定一个变量user，若其在user_list里面，就打印出来
        if user_name == user['username']:        # 判断用户输入的用户名与列表中保存的用户名是否一致
            print(user_list.index(user))        # 一致则按照索引输出用户名的位
            return user_list.index(user) + 1    # 返回用户名在列表中的位数，+1是为了后面函数判断为‘真’
# 4.验证账号密码
def check_login(user_name,pass_word):       # 定义一个登录系统的函数用来验证账户和密码，参数为用户名和密码
    for user in user_list:              # 若用户输入的账户在列表中，则执行以下判断
        if (user_name == user['username']) and (pass_word == user['password']):
            return True     # 若用户输入的用户名和密码与列表中匹配，则返回‘真’
# 5.定义一个变量名为draw_money，参数为uid的取款函数
def draw_money(uid):
    money = input('请输入取款金额：')
    while not money.isdigit():      # .isdigit函数的意思是，如果输入的不是数字，就循环以下语句？？？
        money = input('输入错误，请重新输入取款金额：')

    if int(money) <= user_list[uid]['money']:       # if...else双项分支机构：取款金额小于或等于余额
        user_list[uid]['money'] = user_list[uid]['money'] - int(money)
        print('-'*30)
        print('操作成功！此次取款：{:.2f},您的余额为{:.2f}元'.format(int(money),user_list[uid]['money']))
        print('-'*30)
    else:       # 取款金额大于余额
        print('-'*30)
        print('您的账户余额为：{:.2f}元，不足{:.2f}元，请重新输入取款金额！'.format(user_list[uid]['money'],int(money)))
        print('-'*30)
# 6.定义一个变量名为save_money,参数为uid的存款函数
def save_money(uid):    # 为什么这里的参数是uid,主函数中引用的参数是uid-1？？？
    money = input('请输入存款金额：')
    while not money.isdigit():  # 如果输入的不是数字，则需要用户循环输入金额
        money = input('输入错误，请重新输入存款金额：')
    user_list[1]['money'] = user_list[1]['money'] + int(money)
    print('-'*30)
    print('操作成功！此次存入：{:.2f}元,余额为：{:.2f}'.format(int(money),user_list[uid]['money']))
    print('-'*30)
# 7.定义一个转账函数
def zhuan_money(uid):
    zhuan_user = input('请输入转款用户名：')
    zhuan_uid = check_user(zhuan_user)
    if zhuan_uid:       # 如果转账用户存在
        money = input('请输入转账金额：')
        while not money.isdigit():
            money = input('输入错误，请重新输入转账金额：')
        if int(money) <= user_list[uid]['money']:       # 转账金额小于或等于余额时
            user_list[uid]['money'] = user_list[uid]['money'] - int(money)     # 用户余额-转账金额
            user_list[zhuan_uid-1]['money'] = user_list[zhuan_uid-1]['money'] + int(money)  # 收款用户的余额+转账金额
            print('-'*30)
            print('操作成功！您成功向{}转账{:2f}元，您的余额为：{:2f}元'.format(zhuan_user,int(money),user_list[uid]['money']))
            print('-'*30)
        else:   # 转账金额大于余额
            print('-'*30)
            print('您的余额为{:.2f}元，不足{:.2f}元，请重新操作！'.format(user_list[uid]['money'],int(money)))
            print('-'*30)
    else:       # 转账用户不存在
        print('-'*25)
        print('转账用户不存在，请重新操作！')
        print('-'*25)




# 2.主程序
def main():     # 定义一个主程序函数，变量为main
    while True:     # 使用while True循环是什么意思??
        print('='*20,'欢迎使用A自动存取款机','='*20)
        username = input('请输入用户名：')
        uid = check_user(username)      # 需要定义一个查询函数
        print(uid)                  # 用户输入账户，并赋值给uid，然后打印出uid
        if uid:
            password = input('请输入密码：')      # 如果用户名存在，继续执行--输入密码
            if check_login(username,password):      # 定义一个登录系统判断用户名和密码是否与列表中一致，一致则继续执行
                print('-'*20)
                print('登陆成功！')
                print('-'*20)
                while True:         # 在if check_login(username,password)条件判断下循环
                    print('''1.查询
                             2.取款
                             3.存入
                             4.转账
                             5.退出''')
                    choice = input('请输入指令：')    # 建立if...elif...elif...else多项分支结构
                    if choice == '1':      # 查询
                        print('-'*20)
                        print('您的余额为：｛:.2f｝元'.format(user_list[uid-1]['money']))       # {:.2f}什么意思？？
                        print('-'*20)

                    elif choice == '2':     # 取款
                        draw_money(1)       # 定义一个取款函数

                    elif choice == '3':     # 存钱
                        save_money(uid-1)       # 参数uid-1是什么意思？？

                    elif choice == '4':     # 转账
                        zhuan_money(uid-1)      # 定义一个转账函数

                    elif choice == '5':     # 退出系统
                        print('-'*25)
                        print('系统退出成功！')
                        print('-'*25)
                        break
                    else:   # 指令输入错误
                        print('-'*25)
                        print('指令输入错误，请重新选择！')
                        print('-'*25)
            else:   # 密码错误
                print('-'*25)
                print ('密码错误，请重新登录！')
                print('-'*25)
        else:   # 用户名不存在
            print('-'*25)
            print('账户不存在，请重新输入！')
            print('-'*25)

main()